// 默认时间字符
const defaultTimeString = '--';
/**
 * 时间戳处理
 */
function timestampFilter (time) {
  if (!time) {
    return false;
  }
  time = parseInt(time);
  if (time.toString().length <= 10) {
    time *= 1000;
  }
  return time;
}
/**
 * 克隆对象
 * @param {obj |Array} obj 需要克隆的对象
 * @returns {{}|Array} 克隆的对象
 */
function clone(obj) {
  let copy;
  switch (typeof obj) {
    case 'undefined':
      break;
    case 'number':
    case 'string':
    case 'boolean':
    case 'function':
      copy = obj;
      break;
    case 'object':
      if (obj == null) copy = null;
      else if (toString.call(obj) === '[object Array]') {
        copy = [];
        for (var i in obj) copy.push(clone(obj[i]))
      } else if (toString.call(obj) === '[object RegExp]') {
        copy = obj;
      } else {
        copy = {};
        for (var j in obj)
          copy[j] = clone(obj[j]);
      }
  }
  return copy;
}

export default {
  // 克隆对象
  clone: clone,
  /**
   * 固定长度数字补0
   * @param num 需要补0的数字
   * @param len 长度
   * @returns {string} 补0的数字
   */
  fillZero: (num, len = 2) => {
    return (Array(len).join(0) + num).slice(-2);
  },
  /**
   * 时间戳转 年-月-日
   */
  timestampToYMD(time) {
    time = timestampFilter(time);
    if (!time) {
      return defaultTimeString;
    }

    return moment(time).format('YYYY-MM-DD');
  },
  /**
   * 时间戳转 年-月-日 带中文
   */
  timestampToYMD_zh(time) {
    time = timestampFilter(time);
    if (!time) {
      return defaultTimeString;
    }

    return moment(time).format('YYYY年MM月DD日');
  },
  /**
   * 时间戳转 年-月-日 时:分
   */
  timestampToYMDHM(time) {
    time = timestampFilter(time);
    if (!time) {
      return defaultTimeString;
    }
    return moment(time).format('YYYY-MM-DD HH:mm')
  },

  /**
   * 时间戳转 年-月-日 时:分:秒
   */
  timestampToYMDMS(time) {
    time = timestampFilter(time);
    if (!time) {
      return defaultTimeString;
    }
    return moment(time).format('YYYY-MM-DD HH:mm:ss')
  },

  /**
   * 时间字符串转时间戳
   */
  YMDToTimestamp(string) {
    return moment(string).valueOf();
  },

  /**
   * 时间字符串转时间字符串
   * @param {Sting} DateSting 需要转换的时间
   * @param {String} SringRule 转换规则
   * @returns {string} 转换后的时间
   */
  DateStringToOtherDateString(DateSting, SringRule) {
    return moment(DateSting).format(SringRule)
  },

  /**
   * 时间戳处理
   */
  timestampFilter(time) {
    if (!time) {
      return false;
    }
    time = parseInt(time);
    if (time.toString().length <= 10) {
      time *= 1000;
    }
    return time;
  }
}
